package com.android_web_view;

import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ImageView;

/**
 * WebView控件
 *
 *  1 加载网页显示  加载html数据
 *  2 控制WiebVew加载
 *
 */
public class MainActivity extends AppCompatActivity {

    private ImageView imageView;
    private Button button;
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView= (ImageView) findViewById(R.id.image1);
        button= (Button) findViewById(R.id.but1);
        webView= (WebView) findViewById(R.id.webview);

        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);

        //将一个类的对象，传递给WebView的Window容器 供内部的html/js调用
          //参数1 传递的对象  参数2 别称
        webView.addJavascriptInterface(new MyClass(this),"xxx");

        webView.setWebViewClient(new MyWebView());

        //可以获取 网站的title 获取网站的logo 获取网站的具体加载进度
        webView.setWebChromeClient(new MyWebChromeClient());

        //加载网络页面
       // webView.loadUrl("http://www.hao123.com");

        //设置允许加载本地资源
        settings.setAllowFileAccess(true);
        settings.setAllowContentAccess(true);

        //加载本地
        webView.loadUrl("file:///android_asset/index.html");

    }

    public void onClick(View view) {
        //点击按钮调用JavaScript的forAndroid
        webView.loadUrl("javascript:forAndroid('Android传递过来的参数')");
    }
        /**
         * WebView
         *   1可以防止url通过手机
         *   2
         *   3页面开始加载
         *   4页面加载完成
         *
         */
        class MyWebView extends WebViewClient{
            /**
             * 注意：webview调用loadUrl（） 不会触发此方法！
             * 当加载内部跳转的url时！ 第一调用此方法！
             * 可以给咱们一个机会，可以器拦截要加载的url
             * 如果想要拦截 返回值写出true
             * 如果写成 false 和 super 代表比拦截
             * @param view
             * @param url
             * @return
             */
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                //拦截
               /* if (url.length()>10){
                    return true;
                }*/
                return super.shouldOverrideUrlLoading(view, url);
            }

            /**
             * 当页面开始加载
             * @param view
             * @param url
             * @param favicon  返回的图标
             */
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }

            /**
             * 加载完成
             * @param view
             * @param url
             */
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
            }
        }

    /**
     *  通过WebChromeClient（）可以加载一些方法
     *  可以获取 网站的title 获取网站的logo 获取网站的具体加载进度
     */
    class MyWebChromeClient extends WebChromeClient{
        /**
         * 当前的进度
         * @param view
         * @param newProgress
         */
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
        }

        /**
         *  title值
         * @param view
         * @param title
         */
        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);

            if (TextUtils.isEmpty(title)) {
                //设置ActivityBar
                setTitle(title);
            }
        }

        /**
         * 当前网页的logo
         * @param view
         * @param icon
         */
        @Override
        public void onReceivedIcon(WebView view, Bitmap icon) {
            super.onReceivedIcon(view, icon);
            if (icon!=null) {
                imageView.setImageBitmap(icon);
            }
        }
    }

    //返回键监听
    @Override
    public void onBackPressed() {
        //如果调用WebView向后加载 那么必须判断是否存在上一个页面
        // 加载下一个页面，同理  必须判断是否有下一个页面
        /**
         *
        webView.canGoBack();   //是否存在上一个页面
        webView.canGoForward();// 是否存在下一个页面

        webView.goBack(); //加载上一个页面
        webView.goForward();//加载下一个页面
         */
        if (webView.canGoBack()) {
            webView.goBack();
        }else {
            finish();//关闭当前页面
        }
    }
}
